
from comment.models import db
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash

#用户的模型类
class User(db.Model):
    __tablename__ = 't_user'
    id = db.Column(db.BIGINT, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), doc='用户名')
    password = db.Column(db.String(128), doc='密码')
    icon = db.Column(db.String(5000), doc='头像图片')
    email = db.Column(db.String(100), doc='邮箱')
    nikename = db.Column(db.String(200), doc='昵称')
    note = db.Column(db.String(500), doc='备注')
    phone = db.Column(db.String(11), doc='手机号')

    login_time = db.Column(db.DateTime, default=datetime.now(), doc='登陆时间')
    create_time = db.Column(db.DateTime, default=datetime.now(), doc='用户注册的时间')
    update_time = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), doc='用户修改的时间')
    status = db.Column(db.Integer, doc='用户状态')

    @property  # 是一个pwd属性中的getter函数
    def pwd(self, password):
        """
        # 获取明文密码
        :param password: 明文密码
        :return:
        """
        return self.passsword

    @pwd.setter  # 是一个pwd属性中的setter函数
    def pwd(self, x_password):
        """
        # 将明文密码加密
        :param x_password: 明文密码
        :return: 返回加密的密码
        """
        self.password = generate_password_hash(x_password) # 根据flask提供的算法
        return self.password

    def check_password(self,x_password):
        """
        验证密码
        :param x_password: 明文
        :return:
        """
        return check_password_hash(self.password, x_password)

